Frequently Asked Questions about AxCrypt

Why encrypt?
Why is AxCrypt secure?
I lost my passphrase. Can you help me?
What platforms does AxCrypt run on?
Is AxCrypt HIPAA compliant encryption?
Why does AxCrypt only ask for a passphrase once - is not that insecure?
Why only 128-bit key? Why not 256 or 2048 or millions of bits?
How secure is it?
What encryption algorithm is used?
Why is AxCrypt better than Windows Compressed Folders password protection?
Can I hide/show the .axx extension
How does AxCrypt compare with File2File?
What are the details of the algorithms used?
How many passes does wipe do/Why only one pass wiping?
Why do I only get the Clear Passphrase Memory choice when right-clicking?
Why do I get compile errors when trying to re-compile?

Why encrypt?
Why do you need encryption? In two words: privacy and confidentiality.

As private persons, we nowadays store lots of information on our computers that is not necessarily secret, but just simply private. Many of us also at times have the need to use employer-owned computers and servers, as well as public servers, to store such information. It might be copies of electronic invoices, private letters, your CV etc.

In all these situations you might feel a little more comfortable knowing that regardless of physical access to the files by network administrators, service personnel or even other family members in your home network, your private information is still kept private.

As employees we frequently are responsible for information that is sensitive in various ways. It might be salaries if you're a manager, or customer data if you're in sales or support etc. This information is kept in confidence by you, and you have a responsibility to care for it as best you can.

In many cases it's not really enough to just store it on the corporate network server and apply appropriate restrictive access permissions.  The information and files are still always available to support staff, network administrators etc. Even if you trust your colleagues, as you should, mistakes do happen and sometimes it's simply human to be curious. Anyone finding a file with his or her name on it will be sorely tempted to sneak a peek...

Finally, there are an increasing number of cases where legislation and similar rules come into play such as the FDA 21 Code of Federal Regulations Part 11; Electronic Records; Electronic Signatures and the Health Insurance Portability and Accountability Act, HIPAA, where encryption of confidential data is required under certain circumstances.

In these and similar situations encryption programs such as AxCrypt provide a secure and convenient method to provide privacy and confidentiality as appropriate.

Why is AxCrypt secure?
Because it endeavors to only use accepted practices and algorithms, and is Open Source. Anyone may inspect the source code, check it for errors, omissions or back doors.

What platforms does AxCrypt run on?
It is designed to run on Windows 95/98/ME/NT/2K/XP. Currently there is no Linux or Mac support.

I lost my passphrase. Can you help me??
The basic rule is: If you loose or forget your passphrase or key-file, your documents are lost. There is no back-door into AxCrypt.

The only way to recover a lost passphrase is to try all likely combinations. If you have used a key-file, and lost that, there is nothing to do at all. That is why you must print a paper backup copy if you use key-files.

All that being said, there is a special case where I could possibly help you. If you think you know your passphrase, but not quite, or if it is less than 5 characters long - then I can write and adapt a special program that will try many combinations automatically. This is called a brute force attack.

AxCrypt is specifically engineered to counter brute force attacks, and does it rather well, so this will only work when the number of combinations to try is very small, let's say less than a million.

If you think you may be in a position where you can narrow down the possible combinations enough  for me, then there is a slight chance to recover the passphrase.

A brute force attack requires custom programming and many hours, days and possibly weeks and months of computer time, thus I will only do this when compensated and when I feel that that it might be possible. But it's always done on a no cure - no pay basis, this means that if I can't find the passphrase, there's no fee. The fee depends on the amount of programming necessary, typically it'll vary between USD/EUR 50 to 250.

(I've attempted this three times so far, and not succeeded.)

Is AxCrypt HIPAA compliant encryption?
There is no such thing as HIPAA compliant encryption or software. Only organizations and procedures can be HIPAA compliant.

The appropriate use of encryption and other Technical Safeguards is governed by the HIPAA Security Standards, 45 CFR 160, 162 and 164. The relevant section is 164.312 Technical Safeguards. No recommendations or requirements concerning specific encryption technologies are made there either, it's specifically pointed out that the regulation is technology-neutral. It's up to each and every organization to evaluate it's position and risks, and then implement required or addressable specifications.

Although the standard in no way refers to it except in comments, the CMS Internet Security Policy, which is the current view of Centers for Medicare & Medicaid Services for their own use, does specify some minimal technology levels for certain cases. AxCrypt meets these requirements for transmission over the Internet - but your organization must independently evaluate if is sufficient to use the same level as the Centers for Medicare & Medicaid Services.

The parts where AxCrypt may (and should) suffice as (part of) a Technical Safeguard are:

  • Access Control/Encryption and Decryption - AES-128
  • Integrity/Authentication - HMAC-SHA1-128
  • Transmission Security/Integrity Controls, Encryption AES-128/HMAC-SHA1-128

The HIPAA Security Standard does allow the use of encryption as the basis for Access Control, that is to say to protect the privacy of data at rest (stored on a hard disk as opposed to traversing the Internet for example). AxCrypt will meet most organizations requirements here too.

Why does AxCrypt only ask for a passphrase once - is not that insecure?
Security is a chain only as strong as it's weakest link. In your local system, there are so many other ways to get at your data, that to sacrifice the convenience of a secured passphrase cache just to 'feel' safer, was not thought to be a good idea. If you are concerned about physical access to your own computer there are other measures you should take first. For special situations, there is a link installed in the Start-menu called 'Clear and Unload from Memory' that you may invoke manually or programatically.

Why only 128-bit key? Why not 256 or 2048 or millions of bits?
128-bits is currently enough, and it's not reasonable to provide the full 128-bits anyway using a conventional passphrase. In the future, when AxCrypt supports a hardware token and/or RSA-based key encryption, it will support 256-bits. The really important question is not 128, 256, 448, 2048 or millions of key-bits - it's how they are used. In general, excessive amounts of key-bits is a sign of snake oil. AxCrypt uses proven modes of operation, entropy collection and random number generation as well as work factor increasing key wrapping and individual unique encryption keys for every encryption. See below for details.

How secure is it?
The question breaks down to key lengths. The key length used is 128 bits - exhaustive search is not currently believed to be an option, it is computationally infeasible in cryptographic terms.

The problem lies with the passphrases used. This is the weak point.

Using purely random printable characters as your passphrase, you need to specify twenty characters. Tough to remember though ;-)

Using English words, it is more difficult to say, but assuming there are 1 million English words (an optimistic estimate to say the least), that would be equivalent to 20 bits/word. Thus using only English words, you need to specify a sentence with at least 6 words to even approach using the full 128-bit key length. In practice, any normal sentence will consist of words from a much smaller subset of perhaps 10 000 words, equivalent to 13 bits. You then need at least 10 words...

So - the conclusion is: be verbose, be deliberately obtuse, and please mix in something not part of natural language in your passphrases if you want to really use all security the algorithm supplies. And don't use a famous citation, such as the declaration of independence, or anything else likely to be found in a global literature, web or news text archive search.

What encryption algorithm is used?
The cryptological primitives are AES with 128-bit keys for encryption, and SHA-1 for hashes.

The real answer is much more complex, as there are many ways to use and combine these basic primitives.

Why is AxCrypt better than Windows Compressed Folders password protection? 
In the July 2003 issue of PC World magazine, there is a description of how to password protect files using the built-in Windows Compressed Folders of Windows XP and ME. This is a WinZip compatible extension of the Windows Shell (Windows Explorer).

The problem is that since it is WinZip-compatible it suffers from the same weakness as does WinZip. WinZip (and thus Compressed Folders) password protected archives use a proprietary and weak algorithm that is known to have the following weaknesses, exploited in numerous 'Password Recovery' products and services:

  • If the attacker knows the contents of one of the files in the archive, the password is susceptible to a so-called known plain-text attack. AxCrypt is never susceptible to this kind of attack.
  • If the archive contains 5 or more files, password recovery (i.e. cracked protection) is guaranteed. With AxCrypt you can have any number of files encrypted with the same passphrase without affecting the security.

AxCrypt also supports numerous additional features such as convenient editing of encrypted files - if a file is stored in a Compress Folder, you must manually extract it, edit, and then drag and drop it back into the archive (you can view it inside the archive without manual extraction, but not modify it).

A very convenient way to get the best of both worlds is to install the full WinZip-utility and then AxCrypt your sensitive zipped archives. WinZip full-version also supports strong encryption of individual files in the archives, but as WinZip is primarily an archiver (the best in my opinion), and AxCrypt is fully focused on encryption (the best in my opinion ;-), you get a nice best-of-breed application when you combine the two.

Can I hide/show the .axx extension?
Normally, AxCrypt files will display the .axx extension or not, depending on your global Windows settings. This behavior may be changed by modifying the Windows registry. AxCrypt does not implement any configuration settings to keep things simple, but if you really want this, two registry files are included in the distribution to make it easier for you.

They are named AxCrypt-HideAxxExtension.reg and AxCrypt-ShowAxxExtension.reg respectively, and are located in the AxCrypt program directory which usually is "C:\Program Files\Axon Data\AxCrypt".

How does AxCrypt compare with File2File?
File2File is a subset of AxCrypt, i.e. AxCrypt does all that File2File does, and more.

  AxCrypt 1.5 and later File2File
Algorithm AES AES
Key length 128 ? (128 likely)
Mode CBC CBC
Separate Key and Data Encrypting Keys Yes No
Secure Data Encrypting Key Wrapping NIST AES Key Wrap No
Open & Re-encrypt   Yes No
Open Source Yes No
Documented Algorithms Yes No
Self-decrypting .exe Yes Yes
File Integrity check HMAC-SHA1-128 No
Valid Key check Yes Yes
Command line Yes No
Secure key cache Yes No
Installer Yes Yes
Shell Extension Yes Yes
Stand alone program Yes, Decrypt only No
Integrated shredder One pass PRN overwrite No
Integrated compression Zlib No
Multi-file archives No No
Multi-file and folder selection Yes Yes

If you know of any features or functions that File2File has, but AxCrypt does not, please let me know - I want the comparison table to be as objective as possible.

What are the details of the algorithms used?

  • Passphrases are hashed with SHA-1 to 160 bits, whereof the most significant 128 bits are used as a Key Encrypting Key.
  • Using a Pseudo Random Number Generator specified in FIPS 186-2 operating on a 160-bit Seed and a 160-bit Key with SHA-1, a 128-bit Master Data Encrypting Key is produced.
  • Header data and plain text data is encrypted with different derivations of the Master Data Encrypting Key.
  • The PRNG Seed is a constant accumulating value, dependent on (the presumably secret) user entered keys as well as a 256-byte entropy pool collected continuously through mouse and windows movement, together with further entropy from the system timer and time, as well as a free running bit counter, and the Pentium time stamp counter if available. 128 bytes of the entropy pool are also saved persistently in the registry.
  • The data in the file consists of many header sections containing information about the file size, file name and file modification times as well as version information, integrity checksum etc. Where appropriate, these are kept encrypted under a separate derived key.
  • The Key Encrypting Key is wrapped with the NIST AES Key Wrap Algorithm, with increased round count to at least 10 000. The actual count is determined dynamically - faster processor = higher count.
  • All data concerning the file, namely exact size, original name, file modification and the actual data, is encrypted in Cipher Block Chaining mode with standard padding under different subkey variants of the Master Data Encrypting Key, obtained by encrypting non-secret constants with the Master Data Encrypting Key.
  • The Initialization Vector for CBC-mode (the same is used for all subkeys) is generated with the same PRNG as above.
  • Before encryption, the data is compressed using the standard deflate algorithm from RFC 1950 and RFC 1951, if it is determined to be beneficial.
  • For integrity checking, a RFC 2104 HMAC-SHA1-128, is created for all data (after encryption) except the initial header containing the magic number GUID for file-type id and the HMAC itself.
Sometime in the distant future I may write a white-paper describing the algorithms exactly in a more readable form than C++-code - which is what you may look at currently for more details.

How many passes does wipe do/Why only one pass wiping?

Wipe and Delete only overwrites once, with pseudo random data. I'm currently not planning to implement DoD 5220.22 (NISPOM) sanitization, nor Gutmann 35-pass secure-wipe. The cost of retrieving single-overwritten data is prohibitive as it is, if the attacker has the resources for that (as well as getting physical access to the disk) there are many easier and surer ways of getting at the data.

A PC is such an insecure and uncontrolled environment, that to use DoD-style wiping in a running system is severe overkill and misleading. Such wiping should be used prior to destruction or re-use of hard disks, and then only from a stand-alone diskette and CD so that the entire disk surface may be wiped, regardless of operating system structures. I recommend Boot and Nuke for this purpose.

The purpose of AxCrypt wiping is to protect from use of common un-delete tools, not to protect from electron microscopy or special diagnostic hardware and software available to hard disc manufacturers. Wiping 35 times also takes a lot of time...

Why do I only get the Clear Passphrase Memory choice when right-clicking?
If a file has the 'hidden' attribute, AxCrypt prior to 1.5 will not see it, and thus not give you the choice of either encrypting or decrypting. Please upgrade! 

Why do I get compile errors
when trying to re-compile?

Ensure that you are using Visual Studio 6 and have the latest service pack (at least sp5 - if you get error C2440 you need this), also ensure that you have the latest Microsoft SDK (the one that comes with Visual Studio is dated and does not work with AxCrypt - you may receive errors about undefined symbols and also errors in templates used for safe Handle-handling in AxCrypt).

I have not tried compiling under any other compiler - your mileage will vary.